package net.qhzw.vip.qiyu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import net.qhzw.vip.qiyu.entity.SysRole;
import net.qhzw.vip.qiyu.entity.SysUser;
import net.qhzw.vip.qiyu.model.*;

import java.util.List;
import java.util.Map;

public interface SysUserService extends IService<SysUser> {


    /***
     * 用户登录
     * @param param
     * @return
     */
    LoginUser userLogin(LoginForm param);


    /***
     * 分页查询后台管理人员
     * @param page
     * @param keyword
     * @return
     */
    Page<SysUser> findByPage(Page<SysUser> page, String keyword, Long shopId);


    /***
     * 后台用户登成功返回的权限菜单
     * @param userId
     * @return
     */
    LoginSysUser getLoginSysUser(String userId);


    /***
     * 添加系统用户
     * @param sysUser
     * @return
     */
    boolean addSysUser(Long userId, SysUser sysUser);

    /***
     * 修改系统用户
     * @param sysUser
     * @return
     */
    boolean updateSysUser(SysUser sysUser);


    /***
     * 个人信息修改
     * @param modifyUserForm
     * @return
     */
    boolean updateUserInfo(ModifyUserForm modifyUserForm);


    /***
     * 根据角色id查询角色名称
     * @param roleId
     * @return
     */
    String getRoleNameById(Long roleId);


    /***
     * 根据担保公司id查询名称
     * @param companyId
     * @return
     */
    String findCompanyNameById(Long companyId);

    /***
     * 根据userId获取权限数据
     * @param userId
     * @return
     */
    List<String> getPermissions(Long userId);


    /**
     * 分页查询担保站点风险预警
     *
     * @param query
     * @return
     */
    Map<String, Object> getWarningByPage(Long shopId, WarningQuery query);

    /***
     * 分页查询骑遇风险预警
     * @param query
     * @return
     */
    Map<String, Object> findByPageQY(WarningQuery query, Long shopId);

    SysUser getUserByUsername(String username);

    /**
     * 修改用户状态
     *
     * @param shopId
     * @param status
     * @return
     */
    boolean updateStatus(Long shopId, Byte status);

    SysRole getRoleById(Long roleId);




}
